set the channel topic: A warm welcoming place to cultivate new OSS contributors
set the channel description: A warm welcoming place to cultivate new OSS contributors
So, I'm excited to be in this community, and it got me restarted a little bit, on contributing to OSS.
I have time to work on fiddly things and on polish things: I want to enable --warnings in .rspec, to keep the code-base warning-free.
That's great @olleolleolle. Regarding polish there are still lots of rubocop exceptions that could be gradually ironed out. There's a ticket about that I think (on phone so not easy to look right now)
@madame.sheema I'm curious to hear how you're finding the experience of having people comment on your PR. Are we being kind enough? Is all that attention from people helpful or intimidating (or both?!)
@matt-SmartBear actually I love it! because now there is a debate about how to do it even better and I find it a great opportunity to learn new things
Folks, I added a new ticket with the newcomer label for cucumber-ruby: https://github.com/cucumber/cucumber-ruby/issues/1137 I’m worried I didn’t add enough explanation (I was in a bit of a rush) what do you think?
@matt-SmartBear perhaps something of the concrete nature like
--i18n-languages
--i18n-keywords XX
--i18n-keywords ja
@matt-SmartBear "What does done look like" == "when you support these three"
Ok here goes my first PR https://github.com/cucumber/cucumber-ruby/pull/1140
@aida Now that that if which used to have the display of help in it is shorter, perhaps the happy case could be the first half of that if, and the error the second half?
@aida That is, turning around if !::Gherkin::DIALECTS.keys.include? lang => if ::Gherkin::DIALECTS.keys.include? lang.
*Thread Reply:* @aida Finding ways to reduce
"Assignment Branch Condition size" when the score is missing out 2.4 points : [102.4/100]
is more GOLF than logic.
*Thread Reply:* yeah, when I saw I was like f** haha, but I think I found a way
*Thread Reply:* In this case: # rubocop:disable Metrics/AbcSize placed on the def parse! line as a suffix comment would shut this up.
*Thread Reply:* Any option parser will be tough to keep a small AbcSize on.
*Thread Reply:* @aida some of that is my fault - I added a script this morning that fails rubocop!
*Thread Reply:* @aida if you rebase now rubocop should be happier
*Thread Reply:* Sorry, I should check: do you know what I mean by “rebase”?
*Thread Reply:* I believe the build should be green as of 9ad46cb4ca122a7ac776c6de64331cdb3be67842
*Thread Reply:* but I’m not sure what’s going on with the Windows / AppVeyor build just yet
@aida your PR looks great. I left one suggestion (not mandatory) for a little refactoring you could do while you’re in there, and you’ll need to rebase it so it can easily be merged in.
Let me know if you need a hand with the rebase.
hi there! I'm working in the PR https://github.com/cucumber/cucumber-ruby/pull/1132 about the issue https://github.com/cucumber/cucumber-ruby/issues/1113
That's technically known as Spelunking and is a perfectly valid technique 😜
@madame.sheema as you’re reading the code and trying to understand it, please try to remember this:
You’re getting right into some of the oldest, gnarliest code in the codebase with this change, and so it’s no wonder things don’t make perfect sense. If you can’t understand something, it’s not you, it’s the code. And we need to fix the code so it’s easier to understand.
So don’t lose heart, do ask questions (however stupid you might think they are) and do write down all the bits that make you puzzled so that we can come back and make them easier to read later.
Your feedback as someone new to the codebase is very valuable. You have a perspective I can no longer get on the code.
@madame.sheema I’m back from my vacation. How are you getting on with your mighty PR quest?
*Thread Reply:* Ei! @matt-SmartBear how was your vacation? one of the contributors modified the test scenario and the PR was merged
*Thread Reply:* Woot! How was the experience @madame.sheema? Did we treat you well? Are you keen to do more or did the experience put you off?
*Thread Reply:* @matt-SmartBear the experience was really good, and for sure that I'm going to continue doing things, but for now I will try to pick up easy ones 😊
@matt-SmartBear You don't know me, but welcome back! I have both The Cucumber Book and Cucumber Recipes here at my desk. 🙂
I see you’re already contributing to the community in #help - thanks!
@Gem a good place to get started contributing to any Cucumber repo is to look for the “newcomers” label. We’re still getting things tidied up to add those labels in the right places, but it’s a start:
https://github.com/cucumber/cucumber-ruby/issues?q=is%3Aopen+is%3Aissue+label%3Anewcomers
The style violations ticket listed there is a great way to get started making minor changes and having a look around the codebase. And we’d really appreciate it!
It looks like when the particular cops in .rubocop_todo.yml are looked into but appear to be false positives, they're being moved to the bottom with a Reviewed:... line added to the header comment for each, yeah?
Actually, it just seems like those at the bottom happen to be there alphabetically and someone was working bottom up. 😛
I do like the concept of having reviewed sections at the bottom, though if they're reviewed and suspected to be valid, we should probably move them to .rubocop.yml instead of leaving in todo?
Also looks like PR 1022 was never removed from the todo file and I actually just redid the work. 😛
Is Cucumber's line-length preference 80 or 100 characters? Running through making changes for 80 character lengths but running into a number of scenarios where there isn't much of a way to accomplish that.
It would seem that the todo file was generated with an 80 character limit, sadly. 😛 With how my repo currently is, an 80 limit would result in 1000 offenses and an 100 character limit would result in 308 offenses.
*Thread Reply:* @matt-SmartBear Perhaps it's my not knowing multiple ways to set things up appropriately, but things like this line or the :codeswarm task below are examples https://github.com/cucumber/cucumber-ruby/blob/master/gem_tasks/contributors.rake#L6
*Thread Reply:* How about this line? https://github.com/cucumber/cucumber-ruby/blob/master/lib/autotest/cucumber_mixin.rb#L114
*Thread Reply:* Nearly this whole file 😛 https://github.com/cucumber/cucumber-ruby/blob/master/lib/cucumber/cli/options.rb
*Thread Reply:* Even in my own Cucumber files, I've got step defs that hit 90 characters. Should I be refactoring these to be shorter, too?
@matt-SmartBear On PR 1173 about the duplicate methods: It seems that inlining them may not be as simple as initially thought. Each implementation I've tried, I end up getting different ordered data back so tests fail. Seeing as you mentioned about asking any questions, in here, I'm curious if you've got some insight into that area of the code base?
I've cleaned up some messages as I'm getting more of an understanding of these associated files. Not completely, but more! haha. It's curious that in the entirety of the repo this is the only line that calls MultilineArgument.doc_string directly. https://github.com/jaysonesmith/cucumber-ruby/blob/1021-fix-style-violations-2/lib/cucumber/runtime/support_code.rb#L37
*Thread Reply:* I propose that all of lines 35-43 go into MultilineArgument.from if possible.
I’m sorry I’m too rusty on that bit of the codebase to be able to give specific advice, but that clump there looks like it’s begging to be extracted into a factory method.
*Thread Reply:* Let me try to rework that section to get that going. I ended up pushing a different solution to the PR, but it's definitely not the same thing as what you're requesting.
*Thread Reply:* @matt-SmartBear Give it a look-see now? https://github.com/cucumber/cucumber-ruby/pull/1173/commits/0af9db95ce61a68c42aefc130f852ea8d4457b8a
Hey @matt-SmartBear: Now that I've got committer and am merging things, how do I update history.md as you mentioned?
I'd imagine for tracking purposes, but so that I'm not assuming, yes please!
Yeah, it’s to give users a changelog so they know what’s in each release
The one bit of human decision-making that goes into updating History.md is “What type of change is this? A bug fix? A new feature? A bit of refactoring?”
The type of Rubocop warnings repair is “developer experience/refactoring”, right?
And once I get it ironed out it sounds like this is data that I can write up as a howto for a readme. Any preference on where you want the steps put?
Also, when I've input that, we should update Asklak's welcome message so that includes a note to check it out
*Thread Reply:* That would be really useful. I think this belongs in contributing.md
@Gem Here is a URL directly to building a new Token: https://github.com/settings/tokens/new?description=Aruba%20History%20%20token
I'll add that to a write up though! There's also the official Github doc on it: https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/
@Gem this is the code for the @Aslak Hellesøy bot that invites new contributors: https://github.com/cucumber/commitbit
The welcome message source is here: https://github.com/cucumber/commitbit/blob/master/welcome.ejs.template
Bear in mind that the same message is used across all repos (at the moment) so we’d need to keep it generic enough to make sense in all contexts. I guess pointing to the repo’s contributing.md would be OK though, they should all have one of those.
I’m not quite sure how changes are deployed. Manually at the moment I think.
*Thread Reply:* > I’m not quite sure how changes are deployed. Manually at the moment I think.
As described here @matt-SmartBear: https://github.com/cucumber/commitbit#deploy-the-service
*Thread Reply:* is that just for cucumber ltd folks or core team or what?
*Thread Reply:* sorry if these questions are dumb, I’m still way behind on email since cukenfest
*Thread Reply:* More clear now @matt-SmartBear? https://github.com/cucumber/commitbit#deploy-the-service
*Thread Reply:* yeah better. who exactly could I contact? does it have to be someone in cucumber ltd?
*Thread Reply:* I don't expect tons of changes to commit bit though 🙂
*Thread Reply:* I can see us building other bots too so it might grow
*Thread Reply:* I’m just thinking about @Gem - he has feedback on the template, so the docs need to be self-explanatory for him.
*Thread Reply:* A new bot should probably be a new microservice. I highly recommend playing with Serverless framework and AWS lambda. It's awesome!
*Thread Reply:* Nope, just some node stuff. One instance I use just kicks off a CircleCI rebuild that then runs some cucumber tests that drive a handful of devices through SauceLabs.
*Thread Reply:* The other is a series of dummy advertising responses also in Node. I handle a lot of different query strings and return back generated xml
I actually typed out a question if we could automatically trigger the update on merge
Could also probably use with updating the PR template to include a request to set a tag
@olleolleolle Have you run the update for any of my merged PRs? I don't know if I run them again if it'll duplicate?
*Thread Reply:* it just formats the line in a consistent way based on the PR content, then inserts it at the top of the right section
*Thread Reply:* Its big win is formatting some additional texxxxt - what you said
*Thread Reply:* the other thing you want to do when merging other people’s is check that the PR’s title makes sense
*Thread Reply:* If you just said, 'go update this' I imagine people would have their own idea about the color of the bike shed.
*Thread Reply:* Well @brasmusson feels strongly that the new entries should go at the top, and I kept absent-mindedly adding them at the bottom and getting on his nerves 🙂
*Thread Reply:* Is this the correct placement of the new additions? I feel like it should be under the 3.0.0.pre.2 section?
*Thread Reply:* @Gem 3.0.0.pre.2 has been released so it’s too late to get any changes into that
*Thread Reply:* Ah okay. Should there be a new version number added to the history file then or just leave it be for now?
*Thread Reply:* To be fair, we should have updated lib/cucumber/version when 3.0.0.pre.2 was released with the next target release for master
*Thread Reply:* TL;DR I value consistency (a lot). Yes, I prefer to organize changelogs according to the "latest change first" policy.
When I start to make changes in a code file, I really try to follow the code conversions used in that file. For instance if the existing variable names are using camel-case, any variables I add will also get camel-case names. My personal preference for variable name style is irrelevant, consistency is much more important.
The same goes for changelogs/history-files. I'd like to be able to use "git blame" and with a glance see what policy is to be used in the project, and then follow that policy - to maintain consistency. My personal preference for changelogs/history-files is to use the "latest changes first" policy, both with regards to ordering releases and with regards to ordering items within (sub sections within) each release. I'm not happy if the changelog/history-file has version 1 at the top, and I have to scroll down forever to set what has happend lately (at work - in documents - I have to live with it, having to browse several pages of the amendment record to see what changes have been made in the latest revision, my comment to that is "seriously? seriously?).
The problem for my with @matt-SmartBear adding entries to the bottom of sections in the history-file, is that it raises doubts in my mind that there either is a policy I do not know about, or (worse) that there is no shared understanding among us contributors on the editing of the changelog/history file. Either way that is a stumbling block that makes the ½hour or so I have to just merge the PR at hand and be done with it is not enough time. Before doing that I have to find out whether there is a policy I do not know about, or work on creating a shared understanding - so I then can update the changelog/history-file with consistency. This all ends up that I have to do the work at hand (merging a PR that is ready to be merged, for instance) later - and we all know that "later means never".
If there is not consistency in the changelog/history-file, then a task that should be quite straight forward, suddenly is much harder (at least for me).
While we’re talking about new additions by newish people; https://github.com/cucumber/cucumber-ruby/pull/1153 I’m going to go ahead and merge that.
Is there a topic for this channel? It's not clear to me from the name.
Thanks for setting the topic @matt-SmartBear - would be great if you could do that in the other channels you've created too.
@matt-SmartBear Thoughts on having a PR title prefix of something like, 'Rubocop Lint/Style Fix: ' before 'Fix Style/AndOr' or is just a simple 'Fix Style/AndOr' suitable?
*Thread Reply:* consistency / conventions are good with me. Is there anything established from previous commits?
*Thread Reply:* They're basically on par with my latter example, so nothing too structured aside from "Fix Foo"
*Thread Reply:* I’m sure starting a convention of prefixing wth “Robocop” can’t do any harm
Still curious about how we want to handle the 80 character line length limit. 😛
*Thread Reply:* @matt-SmartBear Basically anything to do with the cli output is a good example. Really long strings for errors or config tables.
*Thread Reply:* I'd have to run rubocop to get more of the non-string/output examples. Not on my osx dev machine currently
*Thread Reply:* @Gem I think the 80 character limit would be useful to apply here. You could miss those conditionals right over at the end of the line.
*Thread Reply:* You could make specific error types (subclassing ProfileNotFound, YmlLoadError) that own the responsibility of constructing their error message.
*Thread Reply:* That would keep the logic and the presentation separate, which would be neater.
*Thread Reply:* If the lines in the new error types are too long, try using something like this:
def message
[
'line 1',
'line 2'
].join
end
*Thread Reply:* Thinking about it, if these lines are over 80 characters in our editors, they’ll also be 80 characters in our users cmd prompts
*Thread Reply:* So maybe we should think about that and just format them nicely over multiple lines, and use a heredoc instead. (https://infinum.co/the-capsized-eight/multiline-strings-ruby-2-3-0-the-squiggly-heredoc)
If anyone’s interested, this little fix could do with some love: https://github.com/cucumber/cucumber-ruby/pull/919
@brasmusson I'm totally on board with that and I also try to abide by keeping code styling similar. @matt-SmartBear has actually seen me do that in a recent commit, too!
So things that I'm thinking need to be visited:
Expansion on updating the contrib file: There seems to be variance between at least the ruby and c++ repos as to what's in the contrib file and I'd like to see things normalized a bit more across them. The c++ file hasn't been updated in four years. 😛
Aside from the age of the c++ file, it has info around PRs including a mention to update the history file whereas the ruby file doesn't.
*Thread Reply:* on that, I think that the problem with people updating the history file in their PR is that it will easily create merge conflicts.
*Thread Reply:* Oh, I wasn't advocating the act of updating history files as well in their PRs.
*Thread Reply:* Was simply noting a difference in the information included in the c++ contrib file versus the ruby contrib file. 🙂
@matt-SmartBear I imagine this form may not get much use, but I'm curious if asking about preferred coding language would be something you'd want to include? https://cucumber.typeform.com/to/gUEP2E?
*Thread Reply:* @theo has been shorting that form yesterday to try and make it more friendly. It’s really just the very first part of a conversation with a company about providing training, and we don’t need to know programming language at that early stage.
Especially as you specify, 'When we get technical, we'll use the programming language your developers use.'
I did a webex presentation for 500 people in a big company yesterday. Could be some of them? Hello you!
So I'm still grappling with trying to wrap my head around and get comfortable with everything, but I'm continuing to add little pieces of information together and understand how/what things are doing which is huge for me. The cucumber product is an incredibly dense landscape to me so to have things start making sense is a fantastic feeling!
I've had a lot of luck with doing things like outputting strings/vars in various places of the code and seeing what's output. Also, for my current work, I've added the 'pry-byebug' gem to the cucumber-expressions-ruby gemspec so that I can step through the code. This has been HUGELY important in understanding the flow of things as well as catching on to tricks/nuances I would have never have caught otherwise.
If you've(speaking broadly to everyone) never spent time with pry-byebug I absolutely recommend it. It's a combination of pry and byebug and allows for really neat interaction with code including step/next/continue/etc and cd'ing through code as you would through a file structure. Check it out!
@mlvandijk > Ideally I would have merged (fast forward?) the master into my branch beforehand
It is never to late. I would do this
git checkout -B pretty-formatter-nested-args 4f30522
to get rid of the merge commit
git rebase upstream/master
I use "upstream" as the name of the remote for the Cucumber-JVM repo, any merge conflicts needs to be handled in this step. Now your local pull-request branch is based on the latest master content (me, I use gitk to inspect the tree of git repo).
git push origin pretty-formatter-nested-args --force
(assuming "origin" is the remote name of your github fork) "--force" is needed as it is not only added commits on your local branch compared to the remote pull request branch. Now the changes on the pull request branch is visible on the pull request on Github.
This is what I would do - to get a cleaner diff on the pull request - so I think you should do that.
Ok, I will give it a try. I'm still learning the finer details of Git (doing tutorials today). The merge conflict is actually because I accidentally merged something yesterday. @Aslak Hellesøy removed it, but not all I think. Anyway to get rid of that commit on master (as it's included in my squashed commit)?
> Anyway to get rid of that commit on master (as it's included in my squashed commit)?
It is possible, I would do:
git revert 43309ab
get revert de85fc6
get rebase -i upstream/master ... (to squash the two revert commits to one, which reverts both those commits)-
git push upstream master
I can fix that, but it has to wait until this evening, I can't do it from work.
Np. I'm home today and can do it. Will try locally first anyway and will learn lots of git \o/
If I don't get it to work, then I will wait for help rather than make it worse...
Ok, I have reverted de85fc6 and 43309ab, rebased and (thought I) squashed and pulled
also rebased master on/under my branch and pushed, PR now updated. 🙂 Learned a lot of git also. thanks for your help @brasmusson !
For updating history.md I made a new branch, pushed it, and merged it myself. Is there a specific process we'd like others to use? Currently updating cucumber-ruby's contributing file to outline steps to update the file
** Make sure that you've created a [Github Access](<https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/>) key and have it set in your environment to `GITHUB_TOKEN`.
** From the cucumber-ruby directory, run the following command: `ruby ./scripts/update-history <PULL--REQUEST-NUMBER>`, making sure to replace `<PULL--REQUEST-NUMBER>`
** Commit and push your changes
*Thread Reply:* Perhaps the wording “have it set in your environment to GITHUB_TOKEN” may confuse a reader.
“and set the environment variable GITHUB_TOKEN to the token’s value” (Gah, is that even more confusing?)
The last step could use some elaboration which has brought me here asking about process.
@Gem same question here (but for cucumber-jvm). I think I just updated the history.md directly on github...
I eventually would like to get all the documents closer to each other to have consistent information across the repo
> For updating history.md I made a new branch, pushed it, and merged it myself.
Using a pull-request for updating history.md (after merging a pull-request) is overkill. The updated history.md, after merging a pull-request, can be pushed directly to master.
My habit when merging pull-requests is to fetch down the pull-request branch locally, merge that branch locally (using a commit comment like Merged <b>#XXX</b> '<pull request title>', and then update History.md and amend that change to the merge commit. After running the tests locally, I push the merge commit to master. I'm probably the only person doing it like this. I like this process myself because I know that the tests works after the merge, and it makes sense to update History.md in the merge commit.
If a pull request fixes an issue, I like the pull request to close that issue (by using the keyword for closing issues in the pull request description), I think that make GitHub display good traceability on the page of the fixed issue. In such a case I would let the History.md update read like: "<good summary of the change> (#<merged pull request>, #<fixed issue> <pull request author)" If the pull request was reasonably/properly named, then the pull request title should be "<good summary of the change>". I do not know if the history.md-update-script of Cucumber-Ruby, can include references to issues fixed by the merge pull request.
I like the idea of pulling the branch locally and running tests yourself to verify as it adds another layer of accountability
I'm not sure if everyone would be on board with that, but I can definitely see the positive add from that!
Essentially, I think PRs are about communication. At the first level, you can create a PR and merge it yourself immediately if you just want it to “rise above the surface” a little more than a regular commit. People watching the repo will be emailed about it, and you can group together a set of commits that are parts of one meaningful change.
Next level up, if you want feedback, a PR is of course a great way to propose a set of changes you’d like other people to consider and give you feedback on before merging.
I think if there are commits you’re entirely confident in, it makes sense to just push them straight to master. That creates less noise on the communications channels.
I believe @Aslak Hellesøy was in the process of writing that guidance up somewhere. What happened to that Aslak?
You mean this @matt-SmartBear ? https://groups.google.com/forum/#!topic/cukes/MvoWkpRR95o
*Thread Reply:* @matt-SmartBear I'd rather have it as part of the new website docs, then individual repos' CONTRIBUTING.md can link to that.
*Thread Reply:* We need something in those contributing files though, no? Look what’s there at the moment: https://github.com/cucumber/cucumber/blob/master/CONTRIBUTING.md
*Thread Reply:* I agree some CONTRIBUTING.md files need to be updated, but I'd rather keep them all slim, linking to an easy-to-read doc on the docs site.
*Thread Reply:* We can link in to the monorepo’s contributing file from the individual repos’ ones.
*Thread Reply:* I agree, ultimately that would be great, but why don’t we iterate towards that.
*Thread Reply:* If we move your content out of the mailing list post into that file, it will already be easier for people (like @Gem) to find.
*Thread Reply:* We can, but I'd rather have something like this: http://hood.ie/contribute/ - with some illustrations.
*Thread Reply:* I worry that’s making the perfect the enemy of the good
Do we have different folks in charge of releases for different repos? I'm curious about our thought of keeping the 'release karma' section of the ruby repo in there OR copying that type of section to each of the other language's repos to have continuity.
*Thread Reply:* for js, they just tag the commit and the build server does it for them!
*Thread Reply:* Taking a quick look at the cucumber-js contributing versus cucumber-ruby, they are both a good bit different
*Thread Reply:* I'd love to settle on the same format for changelogs across the org. I suggest http://keepachangelog.com/
@matt can we merge this room and #welcome? Confusing to have 2 rooms for newcomers.
@Aslak Hellesøy your tag didn't go through it looks like so: @matt-SmartBear
That distinction doesn't seem clear to me. And there are conversations in here that have nothing to do with new contributors
I’m working on the assumption that the overall Slack community will be broader than OSS contributors
Or Cucumber users who don’t have time / interest in becoming OSS contributors.
I guess some of the conversations/questions I've been asking should have been in other channels, but I'm a new contributor that definitely needs nurturing and needs to get up to speed about thought processes/direction.
We've got general, random, help and the_greenhouse - they all seem like a place to discuss anything
I guess #help would be specific for people needing assistance in implementing/solving their own issues, yeah?
I'd prefer channels named after broad discussion topics rather than what role/experience people have
@Aslak Hellesøy @matt-SmartBear Just finished writing this up: https://github.com/cucumber/cucumber/issues/251
@Aslak Hellesøy Sure thing! I'm looking forward to getting it complete. I could use feedback on the items in the 'questions/tuning' section.
I just added a newcomers ticket for cucumber-ruby folks: https://github.com/cucumber/cucumber-ruby/issues/1198
It doesn’t involve any work on the code inside cucumber, just updates to the acceptance tests. Could be a nice way to get started.
@matt-SmartBear I see cucumber expressions for the first time. But I have emulated something like this already with the regular expressions.
I have features/step_definitions/_constants.rb.
Then in step definitions I have expression like Given /^I wait for the pod to terminate with reason #{SYM}$/ do.
@Aleksandar Kostadinov this post explains how to make your own types: https://cucumber.io/blog/2017/09/21/upgrading-to-cucumber-3
Also see https://cucumber.io/blog/2017/07/26/announcing-cucumber-expressions
Hello. Re: https://github.com/cucumber/cucumber-jvm/pull/1025, coincidentally, we are now planning on working on this again. We had other priorities on our end in the past, but now we are focusing on testing strategy again and need to get this resolved. So we will be working on this soon. Please be patient with us.
Hi... need help on failing a cucumber test when a logical test condition fails... Below is my code
try { variantObj = World.TC().RunRoutine("Unit1.checkLeadIsCreated");
result = variantObj.toBoolean();
if(result){
System.out.println("Passed");
}else{
System.out.println("Failed");
}
}
catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
so my code... traces down into System.out.println("Failed"); but my cucumber report still shows it is passed also ... the scenario is reported as passed in the junit report... Please help
That looks like Java (I'm only familiar with the Ruby version of Cucumber) but, in general, your code has to throw an exception in order to fail a test. You can throw it yourself or you can use assertion libraries to throw fancy ones but the code needs to in some way 'explode' and then Cucumber picks up on that. Your test appears to just write some text to Standard Out, which is not something that Cucumber will be paying attention to.
@enkessler: Completely understand that.... but throw new Exception did not work either which was quite strange
For reference, assert fail usually doesn't work (At least it doesn't in Ruby), as it is throwing a block, so you need to evaluate that the block has raised an error.
@Aslak Hellesøy Sure! I was not sure about which channel was relevant.
@Aslak Hellesøy Assuming #help channel for now to post my queries, thanks!
We’re holding an informal OSS community hack-day on the Saturday after CukenFest in London on 21st April.
All current and aspiring Cucumber OSS contributors are welcome. @Aslak Hellesøy and I will be there in person as will @mpkorstanjeand @mlvandijk. @charlierudolph @brasmusson and @Gem will be attending virtually.
Please let me know if you’d be interested in attending either in person or virtually. We’ve got space for about 30 people on the day which I’d imagine would be more than enough, but it will be useful to have some idea of numbers, both in-person and virtually.
Thinking of you particularly @aida and @madame.sheema who set up this channel at the same event last year.
*Thread Reply:* So happy to see you are doing this again!! Unfortunately I won’t be able to join this weekend
@matt-SmartBear This sounds perfect for me - As I'm contributing to Open Source a bit now. Is there a website or some post I can link to. I will try to see if I can get some support from my company.
@tooky Will you be at this hackday? I'm just asking my work about this and they're asking if there's any documentation or anything on it?
They also asked if you'd be there 🙂 in person... So you probably have some fans here.
Haha, it was Claire who asked. I assume you know most of the people who've been here a while as you used to do the Academy I believe (I did it this year with a guy called Paul)
I’ve met quite a few of the people there, and I’ve run about 4 or 5 academy’s 🙂
For Logistics for this who is best to speak to? Just doing some totting up now and working out timings (Probably going to come down)
Want to contribute to Cucumber? Here is a little issue to get you started: https://cucumberbdd.slack.com/archives/C5WD8SA21/p1534891342000100
*Thread Reply:* Had any help with this yet? I'm into helping with the javascript and ruby (I've never touched go).
*Thread Reply:* Actually, the go lang should be easy too. Looks like just moving the logic you've already worked out in Java over to
> .../javascript/.../tree_regexp.js
> .../ruby/.../tree_regexp.rb
> .../go/tree_regexp.go
This really is a great one to get started on.
*Thread Reply:* Sounds good! It’s almost like painting by numbers. You can hack on a language without knowing it, because you’ve seen the implementation in a different language.
*Thread Reply:* @mikegfisher the reporter said he’d work on it tonight: https://github.com/cucumber/cucumber/issues/454#issuecomment-414854132 - maybe sync up with him?
@jasonmichael I'm here now, might or might not be able to answer depending
<two hours later> Dana is you're still there - All the examples I find of 'getting started with cucumber' give Features with scenarios which involve 'software in motion', like "When I click the submit button, Then <something happens>", but what if you just want to use Cucumber to test that things exist? I want to use cucumber to test an AWS account, to ensure that certain resources exist, have these names, these configuration parameters, etc.
Would I use "When I examine the AWS Account, Then I should see <some resource> which has <some detail>"?
I haven't used it like this before but I would imagine it would look something like that
Although my suggestion would be Then I should see <some resource> And it should have <some detail> - that way you have more reusable and less tightly coupled steps
Yes, try to describe the what, not the how.
Hi Team.... This is Raja... I am planning to integrate our cucumber automation framework with Octane (test management tool--They provided support for cucumber BDD)... I have runner class for Octane (https://github.com/HPSoftware/octane-cucumber-jvm/blob/master/src/main/java/com/hpe/alm/octane/OctaneCucumber.java) ... But, we are referring Main class in our project (cucumber.api.cli.Main)... How can I provide referrce to run from OctaneCucumber? or Anyone have done this integration?
@Raja this channel is intended for new OSS contributors. If you need help using Cucumber-JVM I suggest the <#C5YHPPJMP|help-cucumber-jvm> channel.
We used Extenntreport but upgraded to 4.7.1 and it’s not supported any lomger for now. Can somebody suggest a replacement which is simple and will require minimum code?
*Thread Reply:* https://github.com/trivago/cluecumber-report-plugin
We use Gherkin scenarios for our unit tests. Can somebody suggest a good test coverage tool to verify it on Jenkins
*Thread Reply:* We use JaCoCo, but you can use any coverage tool you like @jradom
*Thread Reply:* Code coverage is independent of test framework and build servers.
@Sivasankaramalan Gunasekarasivam has joined the channel
@Luis Miguel Pedraza Gonzalez has joined the channel
What are the best open-source tools , that can be used for reporting when using Gherkin.
I tried clue cumber reporting but i was not able to integrate it to the application.
*Thread Reply:* Please see if you can use https://github.com/damianszczepanik/cucumber-reporting
*Thread Reply:* Shameless plug 🙂
https://github.com/trivago/cluecumber-report-plugin
*Thread Reply:* I can provide an example of using Cluecumber if not provided by Benjamin already
*Thread Reply:* I have an example project here: https://github.com/trivago/cluecumber-report-plugin/tree/master/example-project
*Thread Reply:* Also, you can check out an example report: http://tech.trivago.com/cluecumber-report-plugin/
*Thread Reply:* I've written this SO post on how to use Cluecumber in case it may be helpful? https://stackoverflow.com/questions/60658416/how-to-use-cluecumber-to-generate-reports?noredirect=1#comment107318396_60658416
*Thread Reply:* Nice! However, I would consider this a short manual how to run Cluecumber standalone if you are not running your tests via Maven. Maybe the question can be edited a bit 🙂
*Thread Reply:* Hi, sorry not sure if I understand the suggestion as my tests are under a maven project?
*Thread Reply:* You wrote "Run your tests and once this is done navigate to the terminal and type mvn cluecumber-report:reporting (exactly as it is)." But this wouldn't be necessary in all cases if you run the tests via Maven and have the reporting included in the lifecycle.
*Thread Reply:* @Benjamin Bischoff we have configured maven / the plugin to generate the report after the integration test, but if no tests have run this fails the build. Is there any way to make it so that doesnt happen?
*Thread Reply:* Hi @mlvandijk, only in case of no tests it fails? What about failing tests?
*Thread Reply:* Then it fails. The report fails if it cannot find the cucumber.json (which happens when no tests have run)
*Thread Reply:* I think you are right, in case of no json inputs, there is a failure. This should be changed.
*Thread Reply:* For us it didn't make a difference as we consider a run without tests a failure as well. But it shouldn't fail because the reporting fails, that's true
*Thread Reply:* I added this to the Cluecumber 2.4.0 roadmap: https://github.com/trivago/cluecumber-report-plugin/issues/240
*Thread Reply:* Currently we are just commenting out the plugin when no tests have been added/are running, but I figured there should be an easier way.
*Thread Reply:* I think the cucumber.json if no tests found is '[]' but I'm not sure
*Thread Reply:* i am pretty sure that no files are generated at all
*Thread Reply:* By the way, there is also the option to skip the report generation completely:
https://github.com/trivago/cluecumber-report-plugin#skip-report-generation
*Thread Reply:* So you can pass the skip property to the plugin to prevent it from running
*Thread Reply:* Cool. I figured there would ve a way but hadnt looked for it yet tbh
*Thread Reply:* I like writing documentation but I also struggle when having to read it 😄
*Thread Reply:* I will try to prepare the next Cluecumber release soon. Just need some more motivation to return.
@Gustavo Martins Pereira Pires has joined the channel
@Jean-Philippe Poulin de Courval has joined the channel
If anyone is interested in jumping into OSS, I've been getting a little burnt out flying solo on my projects and would welcome new contributors/maintainers. They're mostly Cucumber related tools and written in Ruby.
*Thread Reply:* Please share the details. I am interested. Thanks.
*Thread Reply:* @Taimur Rasheed Sorry about that, I seem to have been distracted for almost a month. Here you go: https://github.com/enkessler/cuke_modeler#projects
Essentially any of those projects is up for grabs but only cuke_linter and cuke_modeler actively need work, as far as I remember. None of it would be difficult work and the task range from easy to ambitious.
@Alejandro Maximo Espinoza Fuentes has joined the channel
@LUIZ HENRIQUE BRITO MONGELOS has joined the channel
@Seied Mohammad Hosein Abdoli has joined the channel
@William Steearing Cordoba Mosquera has joined the channel
@Jose Manuel Echeverri Palacio has joined the channel
@Jose Manuel Echeverri Palacio has left the channel
Hi Folks, I'm currently trying to write a plain C cucumber version. I'm using the gherkin-c library from the cucumber monorepo to read the feature file and produce pickles. Using the pickles I'm able to invoke my step definitions so the technical part is covered. What I'm struggling with is the report generation. Because the pickles are very simply I would need to produces and parse the ASTs as well to get a proper report. How are other implementation e.g. ruby or java handling ASTs and pickles?
Hi! "Guys" is easily replaced with the more gender-neutral "Folks", "All" or "Foolish mortals". We'd appreciate if you tried to use that. Thanks!
Per a recent webcast on electron/cucumber, I'm attempting to find a current version of java/cucumber implementation of the Journey/Screenplay pattern... and I'm not having much luck. Is that still a thing? or are we just going to stick with PageObject? or is there something else new that I haven't found yet?
Appreciate any URLs. Thanks!
*Thread Reply:* Hi, Brian, Perhaps this link coud help you: https://serenity-bdd.github.io/theserenitybook/latest/cucumber.html
As serenity have implemented scrrenplay pattern
*Thread Reply:* https://serenity-bdd.github.io/theserenitybook/latest/serenity-screenplay.html
*Thread Reply:* yes I've seen serenity / screenplay in several places... although this link to the archetype seems to actually work... thanks!
*Thread Reply:* I personally use Selenide in my projects. Have tried serenity as well, but prefs to Selenide 🙂
*Thread Reply:* @Brian Long there’s a series of blog posts starting here https://cucumber.io/blog/bdd/understandin-screenplay-(part-1)-fundamentals/ by @matt-SmartBear
*Thread Reply:* Serenity is a great place to start if you’re in Java, but just remember that screenplay is a pattern, and you can implement it yourself pretty easily.
*Thread Reply:* ama? unfamiliar. hope it's not terrible. anyway yes we've been working with PageObject and recently I heard a blogcast using words like "training wheels" ... and recommending journey/screenplay. I'm fine with staying with PO, and I'm equally fine with moving to SP if that's where we're going. Just testing the wind.
*Thread Reply:* Those blog posts Steve linked to should give you some idea of how they compare.
*Thread Reply:* I would guess most people use PageObject. Screenplay is not a replacement for PageObject though.
*Thread Reply:* Our test framework uses a ComponentObject pattern which wraps individual component functionalities instead of the whole pages.
Hello all, I'm massively using the cucumber-scala project and saw its status is "unmaintained". Could you explain what would be expected of a maintainer? Update cucumber-scala to Cucumber 5? If so, a PR would be enough? I would love to contribute to cucumber-scala but not sure what would be the best way, if you have ideas or anything please tell me 🙂
*Thread Reply:* Heya, we mostly hang out in #committers and <#C6RLMP3C4|committers-jvm>. You may want to join there.
I don't have the time, expertise or the the interest really to keep the Scala implementation up to date.
So I rather hand this over entirely.
If you want to be maintainer, the tasks mostly come down to:
• Code! Scratch your own itch • Keep dependencies uptodate • Respond to GitHub issues/PRs in a timely manner • Keep the CHANGELOG uptodate • Make releases (Create git tags, update CHANGELOG) • Keep the documentation uptodate • Make the code habitable for new users and contributors • Keep the CI running And of course all that within your own capabilities, interest and availability.
I've created an issue to make it official.
https://github.com/cucumber/cucumber-jvm-scala/issues/21
*Thread Reply:* Ok, thanks for the answer. I'll share it with my company, as we are dependent on it we might want to invest some time to contribute 🙂 In the meantime I'll have a look to the source to understand a bit better how "backends" work.
Hi has anyone had any luck with using localstack and cucumber together for automated acceptance tests?
A simple question 🙂 : When do you use word validate while naming your functions/methods and when do you use word verify while writing particular functions ? thanks in advance ?
*Thread Reply:* Can you give an example? I don't think I understand you.
*Thread Reply:* I never use either one of them 🙂 You are free to use whatever makes sense for you 😎
*Thread Reply:* @mpkorstanje it is a simple question. I am asking about verification and validation difference ? actually naming a method in your page class sometimes become very tricky 🙂
*Thread Reply:* @delso yes you can say that but it is only just to get an idea that how different name people are using for their methods
*Thread Reply:* @ichfaisal what is the method doing? You could start it with assert to avoid the validate/verify ambiguity.
*Thread Reply:* They're different words with different meanings. You use them hopefully in their usual meaning. That you ask this question implies that you may see reason to do so otherwise. That at the very least requires some explanation.
*Thread Reply:* I would "verify" an invariant, but "validate" user input. The distinction has to do with one's level of confidence about the possibility of the check failing, how "hard" of an error may be issued if it fails, etc. It's somewhat squishy, but there are certainly cases (such as these examples) where one seems fine to me and the other wouldn't.
Hi, joining as I'm looking for opportunities to contribute to an open source project! I'm a little confused right now, as there seem to be several versions of various things like forums and chat places, as well as obviously, a lot of places for people to ask general questions about cucumber usage - so, firstly - am I in the right place if I basically want to pick up (ideally simple at first) issues and write code?
*Thread Reply:* Heya,
you are in the right place. You can find the people who commit things in #committers
*Thread Reply:* Are you looking for anything particular to contribute too? A specific language, a tool that you're using, documentation?
*Thread Reply:* Depending on your preferred language, I have several Cucumber related open source projects that could use an additional set of hands. They're not under the official umbrella of Cucumber but it may or may not be easier than jumping into the mono-repos.
*Thread Reply:* Thanks! I know Ruby and am learning Javascript at the moment. Are either of those useful for your projects Eric?
*Thread Reply:* Would this be a good place to start? https://github.com/enkessler/cuke_linter/issues/8
*Thread Reply:* https://rubygems.org/gems/cuke_modeler and https://rubygems.org/gems/cuke_linter are the two most active ones, although any of the Cucumber related ones here could use at least a touch up to make them look vaguely standardized (because every new project started off copy/paste/tweak style but then aged).
*Thread Reply:* That issue would work just fine. It should be simple plug-and-play code and it will get you looking at older solutions to a recurring problem.
*Thread Reply:* "required tag starts with" and "unique scenario names" may be the easiest of the ones left.
*Thread Reply:* Feel free to DM me on Slack or in the GitHub issues themselves if you want to give it a go and have questions.
*Thread Reply:* Thank you! I'll take a look at the two you suggested and see how I get on. 🙂
@david.m.williams 'at' port.ac.uk has joined the channel
@Gilton Assunção Inocencio do Nascimento has joined the channel
@Arikunthavarathan Tamilarasan has joined the channel
@Maximiliano Frantzeski Correa Soares has joined the channel
Hi All, Previously am using cucumber 1.2.5 version and used cucumber-jvm-parallel-plugin for execution of Scenarios in grid parallel. Recently i updated my cucumber version to 4.2.0 , in which the cucumber-jvm-parallel-plugin is inbuild (i read some where). Can some one please help me that how i can run scenarios parallel in grid using cucumber version 4.2.0
*Thread Reply:* <#C5YHPPJMP|help-cucumber-jvm> is a more appropriate channel for that question.
I'm going to archive this channel. It has no activity and distracts people from the other channels.